Numerous communication protocols are employed for transmitting and receiving data between applications. Transmission Control Protocol (TCP) is an example of a data transfer protocol which may be used to reliably transmit data between applications. TCP may generally require a sender to buffer transmitted data until receipt of the data is acknowledged by the receiver. In addition to maintaining a copy of the transmitted data until receipt has been acknowledged, TCP also segments data to suit the path maximum segment size before transmission and may also retransmit data in case of a loss. Both segmentation and retransmission require an efficient mechanism to transmit data from any offset within the buffer. The data to be transmitted from the buffer may be of any size, limited by the maximum send window and maximum segment size. In order to perform the buffering and retransmission efficiently, it would be desirable to ensure zero-copy of data while sending the data out.